home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 031a / faqwin3.zip / FAQXWIN3.TXT
Text File  |  1991-10-14  |  24KB  |  588 lines

  1. Frequently Asked Questions about Windows 3.0
  2.  
  3. TABLE OF CONTENTS
  4.  
  5. 0.  Index
  6.  
  7. >>  1.  Windows newsgroups
  8.  
  9.     2.  Windows development tools
  10.     3.  Windows linkers 
  11.     4.  Windows debuggers 
  12.     5.  Windows RTF word processors 
  13.     6.  Windows SQL products
  14.     7.  Windows C++ class libraries
  15.  
  16.     8.  Windows extended memory handling
  17.     9.  Windows screen prints
  18.  
  19.    10.  Device driver development 
  20.     
  21.    11.  Hiding dialog box controls
  22.    12.  Adding controls to a non-dialog box window
  23.    13.  Using floating-point in Windows
  24.    14.  Changing button colors 
  25.    15.  Programming using large model 
  26.    16.  Linking .FON files
  27.    17.  Window background colors
  28.    18.    Subclassing control windows
  29.    19.  Changing the color palette in 16-color mode
  30.    20.  Allocating global memory in a DLL
  31.    21.  Determining the amount of physical memory
  32.    22.  Aligning columns in a listbox
  33.    23.  Keeping an application iconized or in a fixed-size window
  34.    24.  Modifying a right-justified menu entry
  35.  
  36.    25.  Windows programmer's bibliography
  37.  
  38.    *** A companion posting can be found in comp.windows.ms **
  39.  
  40. ----------------------------------------------------------------------
  41.  
  42.  
  43. 1.  Why are there two newsgroups for windows?
  44.  
  45. >>  comp.windows.ms.programmer is for discussion about developing
  46.     Windows software.  It is not intended for discussions about 
  47.     Windows software or for questions about the Foobar SVGA drivers.
  48.     comp.windows.ms is for any Windows discussions that do not concern
  49.     development of Windows software.
  50.  
  51.  
  52.     --------------------
  53.  
  54.  
  55. 2.  What tools can I use to develop software for Windows?
  56.  
  57. >>  There are a number of options, which are summarized below:
  58.  
  59.     1.    Use the Microsoft Windows SDK (Software Development Kit).  This is
  60.         a necessity for heavy-duty application development.  The SDK is
  61.     designed for Microsoft C 5.1/6.0 and Microsoft Macro Assembler 5.1/6.0,
  62.     but it is possible to use it with other compilers, such as Zortech
  63.     C++ (but not including most Borland compilers).  If you plan to use
  64.     a non-Microsoft compiler, call Microsoft Technical Support to
  65.     obtain the free Supplemental Compiler Utilities disk.  The following
  66.     compilers are currently known to work:
  67.         - Microsoft C             5.1+
  68.         - Microsoft QuickC            2.0
  69.         - Microsoft QuickCfor Windows    1.0
  70.         - Topspeed C            #
  71.         - Watcom C                8.0
  72.         - Watcom C/386 for Windows        8.0
  73.  
  74.         - Borland C++            2.0
  75.         - Glockenspiel C++            ?.?
  76.         - Topspeed C++            #
  77.         - Zortech C++            2.06+
  78.  
  79.         - GFA Basic                1.0
  80.         - Microsoft Visual Basic        1.0
  81.         - Realizer                1.0
  82.  
  83.         - Microsoft Fortran            5.1
  84.         - Watcom Fortran            8.1    [announced]
  85.         - Watcom Fortran/386 for Windows    8.1    [announced]
  86.  
  87.         - Microsoft MASM             5.0+
  88.  
  89.         - Microsoft Pascal            4.0
  90.         - Topspeed Pascal            #
  91.         - Turbo Pascal for Windows        1.0
  92.  
  93.         - Stonybrook Modula-2        2.0+
  94.         - Topspeed Modula-2            2.01+
  95.  
  96.         - Microsoft COBOL            4.5
  97.         - MicroFocus COBOL            2.4+
  98.  
  99.     Of these the following include their own Windows libraries, and
  100.     do not require you to purchase a Windows SDK (although you will
  101.     need to buy the SDK documentation, which is available
  102.     separately; of the following packages, only Zortech C++
  103.     includes the Windows SDK reference manuals).
  104.         - Borland C++          - Turbo Pascal for Windows
  105.         - Microsoft Cobol         - Visual Basic
  106.         - QuickC for Windows     - Zortech C++
  107.     A Windows SDK/Microsoft C bundle is also available at a reduced price.
  108.  
  109.     The following also include the Microsoft QuickWin libraries (or
  110.     equivalent), allowing rapid conversion of DOS character applications
  111.     into the Windows environment:
  112.         - Microsoft Cobol         - Microsoft Fortran
  113.         - QuickC for Windows    - Turbo Pascal for Windows
  114.     
  115.     Applications written using Borland C++ may not run in Windows 
  116.     3.0 Real Mode (due to linker problems), nor do they permit the
  117.     use of huge pointers.
  118.  
  119.     Some of the languages that will *NOT* work are:
  120.         - Microsoft Fortran, QuickPascal, Basic, QuickBasic
  121.         - Borland Turbo C, Turbo C++, Turbo Pascal, Turbo Basic
  122.         - Watcom Basic, Pascal
  123.         - Logitech Modula-2
  124.  
  125.  
  126.     2.    Use an integrated development environment.  There are a number of
  127.     these systems available; the following summarizes the known ones:
  128.  
  129.     a.  Actor.  $495 list ($99 special), free runtime
  130.         An object-oriented programming environment, with C-like syntax.
  131.         It allows quick development of programs and/or prototypes, and
  132.         compiles into an "image" file.  This must be distributed along
  133.         with actor.exe; however, it is possible to combine these into
  134.         a single .exe if you have the Whitewater Resource Toolkit.
  135.  
  136.     b.  Smalltalk/V for Windows.  $500 list, free runtime
  137.         An object-oriented programming environment, portable to OS/2 and
  138.         Macintosh.
  139.  
  140.     c.  Objectworks\Smalltalk for Windows.  $2000 (?) list, runtime $*
  141.         An object-oriented programming environment, portable to Macintosh,
  142.         Open Look and Motif.  Runtime license fees depend on quantity
  143.         required; prices range from $375 for one to below $100 for large
  144.         quantities.
  145.  
  146.     d.  KnowledgePro for Windows.
  147.  
  148.     e.  Borland ObjectVision.  $395 list ($99 special), runtime $395
  149.         A form-oriented environment.  Lacks a "true" programming language.
  150.         Runtime package allows unlimited runtime distribution.
  151.  
  152.     f.  Asymetrix ToolBook.  $395 list, runtime [ARK] $495.
  153.         A HyperCard-like environment, including hypertext capabilities.
  154.         Current version is quite slow.  Includes a conversion utility
  155.         to create ToolBook books from HyperCard stacks.  Author's
  156.         Resource Kit includes tools plus a runtime distribution license.
  157.  
  158.     g.  Spinnaker PLUS.  ? list, ? runtime.
  159.         A Windows version of HyperCard, compatible with the Mac original.
  160.  
  161.     h.  Windowcraft.  ? list, ? runtime.
  162.         [Does anyone have any details about this?]
  163.  
  164.     3.    Use W:CASE, WindowsMAKER, VZ Programmer, Winpro/3 or ProtoGen, all
  165.     of which generate C code for Windows.  This will still require the
  166.     use of the SDK (or, in some cases, the use of BC++).  There is also
  167.     available a shareware code generator UCB/WordPlan ,available on 
  168.     cica.cica.indiana.edu, but it's considerably more limited in functio-
  169.     nality than the commercial products.  No runtime license fees.
  170.  
  171.     5.  Use EASEL/Windows.  This is an MIS-oriented package intended for
  172.     development of client-server or cooperative processing applications.
  173.     3270 connectivity, SQL, DDE, and Windows --- all for mere $7500.
  174.     
  175.  
  176. 3.  What linkers can be used for Windows programs?
  177.  
  178. >>  You can use link 5.10 (or greater), included on the Microsoft C 5.1/6.0
  179.     compiler disks, and available separately with the Supplemental Compiler
  180.     Utilities diskette (free) from Microsoft.  Other linkers that work for
  181.     Windows development are Optilink/Windows, Borland's tlink and Watcom's
  182.     wlink.
  183.  
  184.  
  185. 4.  What debuggers can I use for Windows development?
  186.  
  187. >>  First of all, if you use Actor, Smalltalk or ToolBook, you're limited
  188.     to the debugging tools built into those packages.  If you are using
  189.     C, C++ or another conventional language with Windows SDK, you have
  190.     several choices.  
  191.     
  192.     1.    In real mode, you are limited to SYMDEB, which is pretty basic.  It
  193.         also requires the use of a second monitor (monochrome for most
  194.     machines, 8514/A for MCA machines) or a serial terminal.  SYMDEB
  195.     is included with the Windows SDK.
  196.  
  197.     2.    In standard mode, you can also use Codeview for Windows (CVW), which
  198.     is included with Windows SDK, or Logitech's MultiScope (list: $500).
  199.     The CVW, which is similar to the DOS version of Codeview, included
  200.     with the SDK requires a secondary monitor; a serial terminal can 
  201.     not be used (a single-monitor version, CVW 3.05, is included with
  202.     Microsoft C 6.0ax, and is also available separately from Microsoft).
  203.     CVW is included with the Windows SDK; MultiScope is a separate product.
  204.     Watcom compilers include their own WVideoW debugger.
  205.  
  206.     There is also a product called CV/1 (list: $149), which allows you
  207.     to use CVW without a second monitor.
  208.  
  209.     3.    If you have a 386, you have an additional option of using WDEB386,
  210.         which provides some further debugging features over CVW, at the
  211.     expense of an antiquated user interface.  WDEB386, which is included
  212.     with the SDK, will work either with a secondary monitor or a serial
  213.     terminal.
  214.     
  215.     If you are using Borland C++, you can use TDW.  TDW can do single-
  216.     screen debugging (not windowed, but screen-swapping), but only if
  217.     you are using the standard VGA driver; it will NOT work with higher-
  218.     resolution display drivers.  You may also use TDW for dual-monitor 
  219.     debugging; high resolutions work OK in that case.
  220.  
  221.  
  222. 5.  What word processor can I use to create RTF files for the Windows SDK
  223.     Help Compiler?
  224.  
  225. >>  The following will create RTF files:
  226.     Ami Professional              [RTF compatibility problems]
  227.     JustWrite
  228.     Microsoft Works
  229.     Professional Write Plus
  230.     txt2rtf                    [shareware conversion tool]
  231.     Word for DOS
  232.     Word for Macintosh            [Mac]
  233.     Word for Windows
  234.     Word for Windows, Working Model        [limited file size]
  235.     WordPerfect                 [using wp2rtf.arc macros]
  236.     WriteNow                [Mac, NeXT]
  237.     Xantippe                [shareware hypertext tool]
  238.     You can also create them manually, as the RTF format is plain ASCII,
  239.     but this will very quickly get very awkward and very tedious.  There
  240.     is a description of the RTF format on cica.cica.indiana.edu (Xantippe
  241.     and txt2rtf can also be found on cica).
  242.  
  243.     Some conversion programs (including Doc-to-Doc) will also create RTF
  244.     files from other native word processor formats.
  245.  
  246.  
  247. 7.  What tools are available for SQL development under Windows?
  248.  
  249. >>  The following products provide SQL interfaces:
  250.     ADI SQL for Windows    [announced, not shipping]
  251.     db_VISTA III        [read-only]
  252.     Gupta SQL
  253.     Novell Netware SQL    [announced, not shipping]
  254.     Ocelot SQL for Windows    [one-time $500 distribution royalty]
  255.     Paradox            [requires SQL Link]
  256.     Q+E            [read-only]
  257.     XDB SQL C SDK
  258.  
  259.  
  260. 8.  What C++ class libraries are available for Windows programming?
  261.  
  262. >>  The following products provide C++ class libraries for Windows:
  263.  
  264.     Product        Company            Compiler support
  265.     -------------    ---------------------    ----------------------------
  266.     Commonview    Glockenspiel Ltd.    Borland, Zortech
  267.     C++/Views    CNS, Inc.        Borland, Zortech
  268.     XVT++        XVT Inc.            Borland, Zortech (req. XVT)
  269.     Tier 1        Sturmer Hauss Corp.    Borland, Zortech
  270.     JTW        JT Software            Zortech
  271.     Win++        Blaise Computing        Borland
  272.  
  273.  
  274.     --------------------
  275.  
  276.  
  277. 8.  What does Windows do with my extended memory?  After I run Windows,
  278.     Norton SI reports that I don't have any extended memory.  Is this
  279.     a bug?
  280.  
  281. >>  No, it's not a bug.  Windows requires applications to access extended
  282.     memory using a mechanism known as "XMS".  This mechanism is implemented
  283.     in himem.sys.  If you have device=himem.sys in your config.sys, the
  284.     first XMS call (by Windows or SmartDrive, for example) will transfer
  285.     control of the extended memory to himem.sys, and thus make it in-
  286.     accessible to non-XMS applications.
  287.  
  288.  
  289. 9.  How can I take a snapshot of my Windows screen?
  290.  
  291. >>  Simple -- just pres PrtScr, and Windows will copy the image to the
  292.     clipboard, from where you can paste it into your favourite application.
  293.     Using Alt-PrtScr will take a snapshot of only your current window.
  294.  
  295.  
  296.     --------------------
  297.  
  298.  
  299. 10. What do I need to develop device drivers for Windows?
  300.  
  301. >>  You need to purchase the Windows Device Driver Kit (DDK).  It's available
  302.     direct from Microsoft, and costs $500.
  303.  
  304.  
  305.     --------------------
  306.  
  307.  
  308. 11. How can I hide dialog box controls?
  309.  
  310. >>  EnableWindow(GetDlgItem(hDlg, IDD_CONTROLTOHIDE), FALSE);
  311.     ShowWindow(GetDlgItem(hDlg, IDD_CONTROLTOHIDE), SW_HIDE);
  312.     UpdateWindow(GetDlgItem(hDlg, IDD_CONTROLTOHIDE));
  313.  
  314.  
  315. 12. How can I add pushbuttons and edit controls to a "normal" window which
  316.     is not a dialog box?
  317.  
  318. >>  You can do this by simply calling CreateWindow() with one of the pre-
  319.     defined child window control class names (see table 4.2 in the SDK
  320.     reference manual).
  321.  
  322.  
  323. 13. Why does compiling a Windows application with emulator floating-point
  324.     cause corrupted code segments when running on a non-87 machine?  And
  325.     should I use emulator or alternate floating-point math?
  326.  
  327. >>  The emulated floating point tries to used the coprocessor. When it does
  328.     not find one on startup, it patches the code to use the software floating
  329.     point. Patching does however not adapt the code-segment checksum, thus
  330.     the windows debugging version chokes when it horridly founds that some-
  331.     thing terrible must have happened to the code.  [This problem affects
  332.     only Real mode, and Windows 2.x.]
  333.  
  334.     Get rid of it by setting 'EnableSegmentChecksum=0' in the [debug]
  335.     section of WIN.INI; the problem only affects debugging versions of
  336.     Windows.
  337.  
  338.     The alternate math package is faster on non-x87 machines, but slower on
  339.     those equipped with a math chip.  Depending on your application, you
  340.     might want to ship either, or both.  Borland C++ does not support the
  341.     alternate math package.
  342.  
  343.  
  344.     --------------------
  345.  
  346.  
  347. 14. How do I change the button colors?
  348.  
  349. >>  In Windows 3.0, the button face is defined by two colors. The grey
  350.     (white if ega) face and a dark grey (grey if ega) shadow.  The colors
  351.     also change when the button goes from a normal to pushed in state.  The
  352.     WM_CTLCOLOR message only allows you to change one color at a time so to
  353.     which of the button face colors should this apply?  (Windows 2 button
  354.     faces had only one color so it made sense.)
  355.  
  356.     Maybe something tricky could have been done by using the background
  357.     color for the shadow and foreground color for the face and perhaps
  358.     doing something strange to get the text color in another way... And how
  359.     do you return 2 brushes (you now need a foreground and a background
  360.     brush)?  Or maybe even better, make colors a property of the window and
  361.     some windows could have multiple color properties...
  362.  
  363.     Anyway, Windows doesn't look at the WM_CTLCOLOR message for buttons and
  364.     thus doesn't allow you to change the button colors.  Try it with a
  365.     listbox instead...  The only way to change button colors is to specify
  366.     ButtonColor=, ButtonShadow= and ButtonText= in the [Colors] section of
  367.     your win.ini file.
  368.  
  369.  
  370. 15. Why should I not use large model in my Windows application?  Can I do
  371.     it anyway?
  372.  
  373. >>  Yes, you can do it.  There are several problems with using large model,
  374.     though:
  375.     i.  Your program's data memory will be fixed in real mode.  Effectively,
  376.     your application will cripple any real-mode Windows system.
  377.     ii. You will only be able to have one instance of your application
  378.     active at any one time.
  379.     iii.Your application will run more slowly.
  380.  
  381.     You should consider very carefully before you decide that large model
  382.     is the only way to go; the preferred method is to use medium model, and
  383.     to allocate far data as required.  
  384.     
  385.     Another alternative is to use Watcom C/386 for development; this will
  386.     let you use a single 4GB segment, and 32-bit registers, increasing your
  387.     applications performace substantially (but limiting it to running in 
  388.     386 enhanced mode).
  389.  
  390.  
  391. 16. I get errors linking fonts into a .FON file?  What's the problem?
  392.  
  393. >>  The linker provided with the Windows 3.0 SDK will produce the following
  394.     error when linking fonts:
  395.     Link Error L2049 no segments defined
  396.     The above LINK error is a bug in link. The fix is to run exehdr /r on the
  397.     .exe file, and then run rc on it. The Win3 SDK linker incorrectly detects
  398.     an error, and marks the resulting .exe file with some kind of error bit,
  399.     even though the rest of the exe file is ok. Exehdr /r will reset this
  400.     "error bit", after which rc will work just fine.
  401.  
  402.     An alternate fix is to use link4 from Windows 2.x SDK.
  403.  
  404.  
  405. 17. Should I use GetStockObject( GCW_WHITEBRUSH ) for my window background?
  406.  
  407. >>  Not unless you insist on a white background.  It is preferable to use
  408.     the Control Panel-defined window background color instead:
  409.     WinClass.hbrBackground = COLOR_WINDOW + 1;
  410.  
  411.  
  412. 18. The SDK Guide to Programming says that I shouldn't subclass standard
  413.     edit controls.  Why is this?
  414.  
  415. >>  That's not strictly true.  You can *subclass* them by having your own
  416.     window procedure handle the messages for the windows you create.  What
  417.     is definitely a bad idea is *superclassing* a standard control by doing
  418.     a SetClassLong() to change the window procedure for *all* such windows,
  419.     as this will affect all edit controls in all applications currently
  420.     running in the Windows session.
  421.  
  422.  
  423. 19. Is it possible to change the palette entries for a VGA running in
  424.     16 color mode?
  425.  
  426. >>  If you are using a standard driver, you will need to bypass Windows
  427.     to do it.  Microsoft will tell you to buy the DDK, but there is
  428.     another way.  Now, the Windows system palette maps onto the VGA
  429.     16-color palette as follows:
  430.  
  431.      VGAPAL    SYSPAL          VGAPAL     SYSPAL
  432.        00        00              08        07
  433.        01        01              09        13
  434.        02        02              10        14
  435.        03        03              11        15
  436.        04        04              12        16
  437.        05        05              13        17
  438.        06        06              14        18
  439.        07        12              15        19
  440.  
  441.      #define syspal(n) (n<7 ? n : (n>8 ? n+4 : (n=7 ? 12 : 7)))
  442.      #define vgapal(n) (n<7 ? n : (n>12 ? n-4 : (n=7 ? 8 : 7)))
  443.          
  444.     When you get a WM_SETFOCUS event, save the current state of the
  445.     hardware colormap and installs the one you want.  When you get a 
  446.     WM_KILLFOCUS event, restore the original palette. Don't use the 
  447.     pallette registers directly, though, just modify the color registers
  448.     that they point to.
  449.  
  450.  
  451. 20. How can I allocate global memory that's owned by a DLL?
  452.  
  453. >>  Basically, if you use GlobalAlloc in a DLL, the application that
  454.     called the DLL will own the object.  There is a way around this,
  455.     though: allocate the memory using the GMEM_DDESHARE flag; this
  456.     will make the allocating code segment (rather than the current task)
  457.     own the memory.
  458.  
  459.  
  460. 21. How do I determine how much physical memory is installed, in order
  461.     not to cause swapping in 386 Enhanced mode?
  462.  
  463.     You need to make a DPMI call to obtain that piece of information.  DPMI
  464.     call 0500h with ES:DI pointing to a 30h byte buffer returns the `Free
  465.     Memory Information':
  466.  
  467.     Offset      Description
  468.      00h        Largest available free block in bytes
  469.      04h        Maximum unlocked page allocation
  470.      08h        Maximum locked page allocation
  471.      0Ch        Linear address space size in pages
  472.      10h        Total number of unlocked pages
  473.      14h        Number of free pages
  474.      18h        Total number of physical pages
  475.      1Ch        Free linear address space in pages
  476.      20h        Size of paging file/partition in pages
  477.      24h-2Fh    Reserved
  478.  
  479.     The size of one page in bytes can be determined by function 0604h, which
  480.     returns the page size in bytes in BX:CX.  To call a DPMI function, invoke
  481.     the interrupt 31h. Carry bit will be clear if call was successful.
  482.  
  483.     The complete DPMI 0.9 specification is available free(!) at Intel Lite-
  484.     rature JP26, Santa Clara.  It's also available on cica.cica.indiana.edu.
  485.  
  486.  
  487. 22. How do I aling columns in a listbox?  The proportional font causes the
  488.     columns to be badly misaligned.
  489.  
  490. >>  In the resource file make sure the list box has the LBS_USETABSTOPS style.
  491.     When you add the items to the listbox, separate the fields with tabs.  
  492.     You can either use the default tab stops, or set your own by sending the
  493.     listboxI always used the LB_SETTABSTOPS message.  For more information,
  494.     see SDK Reference vol.1, page 6-44, and SDK Reference vol.2, page 8-43.
  495.     It is also possible to use a fixed font, but the tabstop solution usually
  496.     ends up looking much better.
  497.  
  498.  
  499. 23. How can I force a window to stay iconic?  or to make it non-resizable?
  500.  
  501. >>  In order to make your app stay as an icon, you must process the
  502.     WM_QUERYOPEN message.  If you always return 0 for this message, you
  503.     indicate that the icon can not be opened into a ordinary window.
  504.  
  505.     To retain a fixed size, you must process the WM_GETMINMAXINFO message.
  506.     When you get it, modify the info pointed to by lParam:
  507.      LPPOINT lpSize = (LPPOINT)lParam;
  508.      lpSize[3].x = lpSize[4].x = theRightWidth;
  509.      lpSize[3].y = lpSize[4].y = theRightHeight;
  510.     If you don't want the window to be maximized or iconized, create it
  511.     with the ~WS_MAXIMIZEBOX and/or ~WS_MINIMIZEBOX styles, and disable
  512.     those items from the system menu, if there is one.  Also, you can
  513.     alternately disable resizing by creating the windows with ~WS_THICKFRAME,
  514.     and disabling the Size... item on the system menu.
  515.  
  516.  
  517. 24. How can I use \a to right-justify a menu entry at runtime?
  518.  
  519. >>  It's undocumented, but what you need is a 0x08 in the menu string.
  520.     The easiest way to do this is to place a \b in the string before the
  521.     right-justified part (either the text of the accelerator key).
  522.  
  523.     Incidentally, the Windows 3.0 CUA guidelines no longer call for right-
  524.     justifying the Help menu on the menu bar.
  525.  
  526.  
  527.     --------------------
  528.  
  529.  
  530. 25. What books are there that I should be using for Windows programming?
  531.  
  532. >>  First of all, if you don't have an SDK, you'll want the SDK docs:
  533.     SDK Reference -- Volume 1
  534.         Microsoft Press, 1990, part no. 06856
  535.     SDK Reference -- Volume 2
  536.         Microsoft Press, 1990, part no. 06857
  537.     SDK Guide to Programming
  538.         Microsoft Press, 1990, part no. 06854
  539.     SDK Tools
  540.         Microsoft Press, 1990, part no. 06854
  541.     SAA CUA Advanced Interface Design Guide
  542.         IBM, 1989, part no. SC26-4582-0
  543.  
  544.     Then you can get into the "aftermarket" books:
  545.     Charles Petzold: Programming Windows, 2e
  546.         Microsoft Press, 1990, ISBN 1-55615-264-7
  547.     Jeffrey M. Richter: Windows 3: A Developer's Guide
  548.         M&T Books, 1991, ISBN 1-55851-164-4
  549.  
  550.  
  551.     --------------------
  552.  
  553.  
  554. 75a76
  555. >         - Microsoft QuickCfor Windows    1.0
  556. 102c103
  557. <         - Microsoft COBOL            4.0
  558. ---
  559. >         - Microsoft COBOL            4.5
  560. 105,111c106,120
  561. <     Of these, Borland C++, Visual Basic, Turbo Pascal for Windows and
  562. <     Zortech C++ (version 3.0 only) include their own Windows libraries,
  563. <     and do not require you to purchase a Windows SDK (although you will
  564. <     need to buy the SDK documentation, which is available separately; of
  565. <     the aforemenmtioned packages, only Zortech C++ includes the Windows
  566. <     SDK reference manuals).  The Windows SDK is also available in a 
  567. <     bundle with Microsoft C 6.0ax, at a reduced price.
  568. ---
  569. >     Of these the following include their own Windows libraries, and
  570. >     do not require you to purchase a Windows SDK (although you will
  571. >     need to buy the SDK documentation, which is available
  572. >     separately; of the following packages, only Zortech C++
  573. >     includes the Windows SDK reference manuals).
  574. >         - Borland C++          - Turbo Pascal for Windows
  575. >         - Microsoft Cobol         - Visual Basic
  576. >         - QuickC for Windows     - Zortech C++
  577. >     A Windows SDK/Microsoft C bundle is also available at a reduced price.
  578. >     The following also include the Microsoft QuickWin libraries (or
  579. >     equivalent), allowing rapid conversion of DOS character applications
  580. >     into the Windows environment:
  581. >         - Microsoft Cobol         - Microsoft Fortran
  582. >         - QuickC for Windows    - Turbo Pascal for Windows
  583.  
  584. [ \tom haapanen --- university of waterloo --- tom@mims-iris.waterloo.edu ]
  585. [ "i don't even know what street canada is on"               -- al capone ]
  586. [ "trust the programmer"                               -- ansi c standard ]
  587.